package com.quiz.bis.mapper;


import cn.hutool.core.lang.Opt;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.quiz.bis.domain.bo.ExamGroupQueryBo;
import com.quiz.bis.domain.model.ExamGroup;
import com.quiz.bis.domain.vo.ExamGroupApplicationVo;
import com.quiz.bis.domain.vo.ExamGroupVo;
import com.quiz.common.mybatis.core.mapper.BaseMapperPlus;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 考试组Mapper接口
 * @author ahuan
 */
@Mapper
public interface ExamGroupMapper extends BaseMapperPlus<ExamGroup> {
    Page<ExamGroup> selectMainOwnerGroups(Page<ExamGroup> page, @Param("userId") Long userId);
    Page<ExamGroup> selectSecondaryOwnerGroups(Page<ExamGroup> page, @Param("userId") Long userId);
    Page<ExamGroup> selectMemberGroups(Page<ExamGroup> page, @Param("userId") Long userId);
    Page<ExamGroup> selectDisabledOrQuitGroups(Page<ExamGroup> page, @Param("userId") Long userId);

    List<ExamGroupVo> selectVoList(@Param(Constants.WRAPPER) Wrapper<ExamGroup> queryWrapper);

    /**
     * 查询学生参加的考试组
     * @param page 分页参数
     * @param queryBo 查询参数
     * @return 考试组列表
     */
    IPage<ExamGroupVo> selectStudentGroups(IPage<ExamGroup> page, @Param("queryBo") ExamGroupQueryBo queryBo);

    ExamGroupVo selectGroupByInviteCode(String code);

    IPage<ExamGroupApplicationVo> selectStudentApplications(@Param("page") Page<Object> page, @Param("userId") Long userId);
}
